import {
    API
} from "../../utils/fireapi";
import {
    Config
} from '../../utils/config';
import {
    Utils
} from '../../utils/util';
const app = getApp();
Page({
    data: {
        // 当前选中的支付方式
        selectedPayment: Config.PAY_TYPE_WX,
        // 接收调用支付页面传来的后端功能标识对象
        identity: undefined,
        clearable: 1,
        bannerAd: null
    },
    // 选择支付方式radio事件接收函数
    selectPayment(evt) {
        this.setData({
            selectedPayment: evt.detail
        })
    },
    // 获取预支付信息后,发起小程序的微信支付
    wxPay(payInfo, callback) {
        wx.requestPayment({
            nonceStr: payInfo.nonceStr,
            package: payInfo.package,
            paySign: payInfo.paySign,
            timeStamp: payInfo.timeStamp,
            signType: payInfo.signType,
            success: function (res) {
                callback(true);
            },
            fail: function (err) {
                callback(false);
            },
        });
    },
    // 返回调用页面以及支付的实际结果(成功或失败)
    navigateBack(payRes) {
        let eventChannel = this.getOpenerEventChannel();
        eventChannel.emit(payRes.name || "pay", payRes.data || payRes);
        wx.navigateBack({
            delta: 1 // 返回上一级页面。
        })
    },
    // 点击支付按钮后调用后台API进行支付,如果微信支付方式,后端
    // 会返回预支付信息,调用wxPay函数进行真正的支付
    pay() {
        // 选择的调用后端的支付信息
        let payInfo = {
            "func_name": this.data.identity.id, // 后端服务功能标识
        };
        API.getPayInfo(payInfo).then((prepayRes) => {
            this.wxPay(prepayRes, (res) => {
                this.navigateBack({
                    success: res
                })
            });
        }, (err) => {
            this.showError({title: err,icon: 'error',duration: 2000,mask: true});
        })

    },
    clearableChange(e) {
        this.setData({
            clearable: e.detail
        })
    },
    // 接收要求支付的页面传来的功能服务标识对象,即要支付的那种功能
    onLoad(options) {
        const data = app.globalData.serverData;
        this.setData({
            bannerAd: data['ad'][Config.AD_POSITION_CASHIER],
        })

        let eventChannel = this.getOpenerEventChannel();
        if (Object.keys(eventChannel).length !== 0) {
            eventChannel.on("product", (data) => {
                this.setData({
                    identity: data
                })
            });
        }
    },
})